package com.neusoft.db;

import java.io.InputStream;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp2.BasicDataSourceFactory;

import com.neusoft.myutils.MyUtil;

/**
 * 单例模式
 * 		获取数据源对象
 * @author Administrator
 *
 */
public class DBDataSource {
	//数据源对象--静态实例变量
	private static DataSource dataSource;
	//私有的构造函数--禁止类的外部创建该类的实例对象
	private DBDataSource() {
		
	}
	/**
	 * 获取数据源对象
	 * 
	 * @return 数据源对象
	 */
	public static DataSource getDataSourceInstance() {
		//判定静态实例变量是否被初始化(第一次访问需要进行初始化)
		if(dataSource == null) {
			try {
				//使用properties工具类读取配置文件
				Properties prop = new Properties();
				//将配置文件内容读取为输入流对象
				InputStream is = DBDataSource.class.getClassLoader().getResourceAsStream("db.properties");
				//将配置文件的输入流内容加载到properties类的实例变量prop中
				prop.load(is);
				//初始化数据源对象，使用dbcp2的BasicDataSourcrFactory类的createDataSource工厂方法获取数据源对象
				dataSource = BasicDataSourceFactory.createDataSource(prop);
			} catch (Exception e) {
				MyUtil.logRootLogger.debug("数据源初始化异常："+e.getMessage());
				e.printStackTrace();
			}
			
		}
		return dataSource;
	}
}
